package main

// $ go mod init github.com/zhangxi/grpc_goods_service
// $ ==> go mod init grpc_goods_service
// $ go mod tidy  #==> 下载项目中引入的第三方包,
// $ protoc --go_out=plugins=grpc:./ *.proto    // 使用 protoc-gen-go.exe
// $ 而不再是 protoc --go_out=./ order.proto

import (
	"context"
	"fmt"
	"google.golang.org/grpc"
	"grpc_goods_service/proto/goodsService"
	"net"
)

// 1.定义一个远程调用的结构体和方法, 这里我们这个结构体需要实现  GreeterService 的接口,
// type GreeterServer interface { SayHello(context.Context, *HelloReq) (*HelloResp, error) }
type Goods struct{}

func (this Goods) AddGoods(c context.Context, req *goodsService.AddGoodsReq) (*goodsService.AddGoodsResp, error) {
	fmt.Println(req)
	return &goodsService.AddGoodsResp{
		Success: true,
		Message: "Add data success",
	}, nil
}

func main() {
	// 1.获取 grpc 的实例,
	// "$ go get -u -v google.golang.org/grpc"
	grpcServer := grpc.NewServer()
	// 2.注册 grpc 服务,
	goodsService.RegisterGoodsServer(grpcServer, &Goods{})
	// 3.监听端口,
	listener, err := net.Listen("tcp", "0.0.0.0:8010")
	if err != nil {
		fmt.Println("net.Listen() err:", err)
		return
	}
	// 4.退出关闭监听,
	defer listener.Close()
	// 5.启动服务,
	grpcServer.Serve(listener)

}
